home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / X11R4 / cmds / X / ddx / sprite.X11R3 / hdr / cg6tec.h < prev    next >
Encoding:
C/C++ Source or Header  |  1989-11-03  |  23.8 KB  |  714 lines

  1. /*
  2.  * @(#)cg6tec.h 1.3 89/03/30 SMI
  3.  */
  4.  
  5. /*
  6.  * Copyright 1989, Sun Microsystems, Inc.
  7.  */
  8.  
  9. #ifndef cg6tec_DEFINED
  10. #define cg6tec_DEFINED
  11.  
  12. /*
  13.  * TEC register offsets from base address. These offsets are
  14.  * intended to be added to a pointer-to-integer whose value is the
  15.  * base address of the CG6 memory mapped register area.
  16.  */
  17.  
  18. typedef double TEC_DATA;    /* type for DATA00 - 63 */
  19. /* base for transform data registers */
  20.  
  21. #define L_TEC_DATA_BASE        (0x100/sizeof(u_int))
  22. #define L_TEC_DATA00        (0x100/sizeof(u_int))
  23. #define L_TEC_DATA01        (0x104/sizeof(u_int))
  24. #define L_TEC_DATA02        (0x108/sizeof(u_int))
  25. #define L_TEC_DATA03        (0x10C/sizeof(u_int))
  26. #define L_TEC_DATA04        (0x110/sizeof(u_int))
  27. #define L_TEC_DATA05        (0x114/sizeof(u_int))
  28. #define L_TEC_DATA06        (0x118/sizeof(u_int))
  29. #define L_TEC_DATA07        (0x11C/sizeof(u_int))
  30. #define L_TEC_DATA08        (0x120/sizeof(u_int))
  31. #define L_TEC_DATA09        (0x124/sizeof(u_int))
  32. #define L_TEC_DATA10        (0x128/sizeof(u_int))
  33. #define L_TEC_DATA11        (0x12C/sizeof(u_int))
  34. #define L_TEC_DATA12        (0x130/sizeof(u_int))
  35. #define L_TEC_DATA13        (0x134/sizeof(u_int))
  36. #define L_TEC_DATA14        (0x138/sizeof(u_int))
  37. #define L_TEC_DATA15        (0x13C/sizeof(u_int))
  38. #define L_TEC_DATA16        (0x140/sizeof(u_int))
  39. #define L_TEC_DATA17        (0x144/sizeof(u_int))
  40. #define L_TEC_DATA18        (0x148/sizeof(u_int))
  41. #define L_TEC_DATA19        (0x14C/sizeof(u_int))
  42. #define L_TEC_DATA20        (0x150/sizeof(u_int))
  43. #define L_TEC_DATA21        (0x154/sizeof(u_int))
  44. #define L_TEC_DATA22        (0x158/sizeof(u_int))
  45. #define L_TEC_DATA23        (0x15C/sizeof(u_int))
  46. #define L_TEC_DATA24        (0x160/sizeof(u_int))
  47. #define L_TEC_DATA25        (0x164/sizeof(u_int))
  48. #define L_TEC_DATA26        (0x168/sizeof(u_int))
  49. #define L_TEC_DATA27        (0x16C/sizeof(u_int))
  50. #define L_TEC_DATA28        (0x170/sizeof(u_int))
  51. #define L_TEC_DATA29        (0x174/sizeof(u_int))
  52. #define L_TEC_DATA30        (0x178/sizeof(u_int))
  53. #define L_TEC_DATA31        (0x17C/sizeof(u_int))
  54. #define L_TEC_DATA32        (0x180/sizeof(u_int))
  55. #define L_TEC_DATA33        (0x184/sizeof(u_int))
  56. #define L_TEC_DATA34        (0x188/sizeof(u_int))
  57. #define L_TEC_DATA35        (0x18C/sizeof(u_int))
  58. #define L_TEC_DATA36        (0x190/sizeof(u_int))
  59. #define L_TEC_DATA37        (0x194/sizeof(u_int))
  60. #define L_TEC_DATA38        (0x198/sizeof(u_int))
  61. #define L_TEC_DATA39        (0x19C/sizeof(u_int))
  62. #define L_TEC_DATA40        (0x1A0/sizeof(u_int))
  63. #define L_TEC_DATA41        (0x1A4/sizeof(u_int))
  64. #define L_TEC_DATA42        (0x1A8/sizeof(u_int))
  65. #define L_TEC_DATA43        (0x1AC/sizeof(u_int))
  66. #define L_TEC_DATA44        (0x1B0/sizeof(u_int))
  67. #define L_TEC_DATA45        (0x1B4/sizeof(u_int))
  68. #define L_TEC_DATA46        (0x1B8/sizeof(u_int))
  69. #define L_TEC_DATA47        (0x1BC/sizeof(u_int))
  70. #define L_TEC_DATA48        (0x1C0/sizeof(u_int))
  71. #define L_TEC_DATA49        (0x1C4/sizeof(u_int))
  72. #define L_TEC_DATA50        (0x1C8/sizeof(u_int))
  73. #define L_TEC_DATA51        (0x1CC/sizeof(u_int))
  74. #define L_TEC_DATA52        (0x1D0/sizeof(u_int))
  75. #define L_TEC_DATA53        (0x1D4/sizeof(u_int))
  76. #define L_TEC_DATA54        (0x1D8/sizeof(u_int))
  77. #define L_TEC_DATA55        (0x1DC/sizeof(u_int))
  78. #define L_TEC_DATA56        (0x1E0/sizeof(u_int))
  79. #define L_TEC_DATA57        (0x1E4/sizeof(u_int))
  80. #define L_TEC_DATA58        (0x1E8/sizeof(u_int))
  81. #define L_TEC_DATA59        (0x1EC/sizeof(u_int))
  82. #define L_TEC_DATA60        (0x1F0/sizeof(u_int))
  83. #define L_TEC_DATA61        (0x1F4/sizeof(u_int))
  84. #define L_TEC_DATA62        (0x1F8/sizeof(u_int))
  85. #define L_TEC_DATA63        (0x1FC/sizeof(u_int))
  86.  
  87.  
  88. /* matrix registers */
  89.  
  90. #define L_TEC_MV_MATRIX        (0x000/sizeof(u_int))
  91. #define L_TEC_CLIPCHECK        (0x004/sizeof(u_int))
  92. #define L_TEC_VDC_MATRIX    (0x008/sizeof(u_int))
  93.  
  94.  
  95. /* command register */
  96.  
  97. #define L_TEC_COMMAND1        (0x0010/sizeof(u_int))
  98. #define L_TEC_COMMAND2        (0x0014/sizeof(u_int))
  99. #define L_TEC_COMMAND3        (0x0018/sizeof(u_int))
  100. #define L_TEC_COMMAND4        (0x001c/sizeof(u_int))
  101.  
  102.  
  103. /* u_integer indexed address registers */
  104.  
  105. #define L_TEC_IPOINTABSX    ( 0x800 / sizeof(u_int) )
  106. #define L_TEC_IPOINTABSY    ( 0x804 / sizeof(u_int) )
  107. #define L_TEC_IPOINTABSZ    ( 0x808 / sizeof(u_int) )
  108. #define L_TEC_IPOINTABSW    ( 0x80C / sizeof(u_int) )
  109. #define L_TEC_IPOINTRELX    ( 0x810 / sizeof(u_int) )
  110. #define L_TEC_IPOINTRELY    ( 0x814 / sizeof(u_int) )
  111. #define L_TEC_IPOINTRELZ    ( 0x818 / sizeof(u_int) )
  112. #define L_TEC_IPOINTRELW    ( 0x81C / sizeof(u_int) )
  113.  
  114. #define L_TEC_ILINEABSX        ( 0x840 / sizeof(u_int) )
  115. #define L_TEC_ILINEABSY        ( 0x844 / sizeof(u_int) )
  116. #define L_TEC_ILINEABSZ        ( 0x848 / sizeof(u_int) )
  117. #define L_TEC_ILINEABSW        ( 0x84C / sizeof(u_int) )
  118. #define L_TEC_ILINERELX        ( 0x850 / sizeof(u_int) )
  119. #define L_TEC_ILINERELY        ( 0x854 / sizeof(u_int) )
  120. #define L_TEC_ILINERELZ        ( 0x858 / sizeof(u_int) )
  121. #define L_TEC_ILINERELW        ( 0x85C / sizeof(u_int) )
  122.  
  123. #define L_TEC_ITRIABSX        ( 0x880 / sizeof(u_int) )
  124. #define L_TEC_ITRIABSY        ( 0x884 / sizeof(u_int) )
  125. #define L_TEC_ITRIABSZ        ( 0x888 / sizeof(u_int) )
  126. #define L_TEC_ITRIABSW        ( 0x88C / sizeof(u_int) )
  127. #define L_TEC_ITRIRELX        ( 0x890 / sizeof(u_int) )
  128. #define L_TEC_ITRIRELY        ( 0x894 / sizeof(u_int) )
  129. #define L_TEC_ITRIRELZ        ( 0x898 / sizeof(u_int) )
  130. #define L_TEC_ITRIRELW        ( 0x89C / sizeof(u_int) )
  131.  
  132. #define L_TEC_IQUADABSX        ( 0x8C0 / sizeof(u_int) )
  133. #define L_TEC_IQUADABSY        ( 0x8C4 / sizeof(u_int) )
  134. #define L_TEC_IQUADABSZ        ( 0x8C8 / sizeof(u_int) )
  135. #define L_TEC_IQUADABSW        ( 0x8CC / sizeof(u_int) )
  136. #define L_TEC_IQUADRELX        ( 0x8D0 / sizeof(u_int) )
  137. #define L_TEC_IQUADRELY        ( 0x8D4 / sizeof(u_int) )
  138. #define L_TEC_IQUADRELZ        ( 0x8D8 / sizeof(u_int) )
  139. #define L_TEC_IQUADRELW        ( 0x8DC / sizeof(u_int) )
  140.  
  141. #define L_TEC_IRECTABSX        ( 0x900 / sizeof(u_int) )
  142. #define L_TEC_IRECTABSY        ( 0x904 / sizeof(u_int) )
  143. #define L_TEC_IRECTABSZ        ( 0x908 / sizeof(u_int) )
  144. #define L_TEC_IRECTABSW        ( 0x90C / sizeof(u_int) )
  145. #define L_TEC_IRECTRELX        ( 0x910 / sizeof(u_int) )
  146. #define L_TEC_IRECTRELY        ( 0x914 / sizeof(u_int) )
  147. #define L_TEC_IRECTRELZ        ( 0x918 / sizeof(u_int) )
  148. #define L_TEC_IRECTRELW        ( 0x91C / sizeof(u_int) )
  149.  
  150. /* fixed pou_int indexed address registers */
  151.  
  152. #define L_TEC_BPOINTABSX    ( 0xA00 / sizeof(u_int) )
  153. #define L_TEC_BPOINTABSY    ( 0xA04 / sizeof(u_int) )
  154. #define L_TEC_BPOINTABSZ    ( 0xA08 / sizeof(u_int) )
  155. #define L_TEC_BPOINTABSW    ( 0xA0C / sizeof(u_int) )
  156. #define L_TEC_BPOINTRELX    ( 0xA10 / sizeof(u_int) )
  157. #define L_TEC_BPOINTRELY    ( 0xA14 / sizeof(u_int) )
  158. #define L_TEC_BPOINTRELZ    ( 0xA18 / sizeof(u_int) )
  159. #define L_TEC_BPOINTRELW    ( 0xA1C / sizeof(u_int) )
  160.  
  161. #define L_TEC_BLINEABSX        ( 0xA40 / sizeof(u_int) )
  162. #define L_TEC_BLINEABSY        ( 0xA44 / sizeof(u_int) )
  163. #define L_TEC_BLINEABSZ        ( 0xA48 / sizeof(u_int) )
  164. #define L_TEC_BLINEABSW        ( 0xA4C / sizeof(u_int) )
  165. #define L_TEC_BLINERELX        ( 0xA50 / sizeof(u_int) )
  166. #define L_TEC_BLINERELY        ( 0xA54 / sizeof(u_int) )
  167. #define L_TEC_BLINERELZ        ( 0xA58 / sizeof(u_int) )
  168. #define L_TEC_BLINERELW        ( 0xA5C / sizeof(u_int) )
  169.  
  170. #define L_TEC_BTRIABSX        ( 0xA80 / sizeof(u_int) )
  171. #define L_TEC_BTRIABSY        ( 0xA84 / sizeof(u_int) )
  172. #define L_TEC_BTRIABSZ        ( 0xA88 / sizeof(u_int) )
  173. #define L_TEC_BTRIABSW        ( 0xA8C / sizeof(u_int) )
  174. #define L_TEC_BTRIRELX        ( 0xA90 / sizeof(u_int) )
  175. #define L_TEC_BTRIRELY        ( 0xA94 / sizeof(u_int) )
  176. #define L_TEC_BTRIRELZ        ( 0xA98 / sizeof(u_int) )
  177. #define L_TEC_BTRIRELW        ( 0xA9C / sizeof(u_int) )
  178.  
  179. #define L_TEC_BQUADABSX        ( 0xAC0 / sizeof(u_int) )
  180. #define L_TEC_BQUADABSY        ( 0xAC4 / sizeof(u_int) )
  181. #define L_TEC_BQUADABSZ        ( 0xAC8 / sizeof(u_int) )
  182. #define L_TEC_BQUADABSW        ( 0xACC / sizeof(u_int) )
  183. #define L_TEC_BQUADRELX        ( 0xAD0 / sizeof(u_int) )
  184. #define L_TEC_BQUADRELY        ( 0xAD4 / sizeof(u_int) )
  185. #define L_TEC_BQUADRELZ        ( 0xAD8 / sizeof(u_int) )
  186. #define L_TEC_BQUADRELW        ( 0xADC / sizeof(u_int) )
  187.  
  188. #define L_TEC_BRECTABSX        ( 0xB00 / sizeof(u_int) )
  189. #define L_TEC_BRECTABSY        ( 0xB04 / sizeof(u_int) )
  190. #define L_TEC_BRECTABSZ        ( 0xB08 / sizeof(u_int) )
  191. #define L_TEC_BRECTABSW        ( 0xB0C / sizeof(u_int) )
  192. #define L_TEC_BRECTRELX        ( 0xB10 / sizeof(u_int) )
  193. #define L_TEC_BRECTRELY        ( 0xB14 / sizeof(u_int) )
  194. #define L_TEC_BRECTRELZ        ( 0xB18 / sizeof(u_int) )
  195. #define L_TEC_BRECTRELW        ( 0xB1C / sizeof(u_int) )
  196.  
  197. /* floating pou_int indexed address registers */
  198.  
  199. #define L_TEC_FPOINTABSX    ( 0xC00 / sizeof(u_int) )
  200. #define L_TEC_FPOINTABSY    ( 0xC04 / sizeof(u_int) )
  201. #define L_TEC_FPOINTABSZ    ( 0xC08 / sizeof(u_int) )
  202. #define L_TEC_FPOINTABSW    ( 0xC0C / sizeof(u_int) )
  203. #define L_TEC_FPOINTRELX    ( 0xC10 / sizeof(u_int) )
  204. #define L_TEC_FPOINTRELY    ( 0xC14 / sizeof(u_int) )
  205. #define L_TEC_FPOINTRELZ    ( 0xC18 / sizeof(u_int) )
  206. #define L_TEC_FPOINTRELW    ( 0xC1C / sizeof(u_int) )
  207.  
  208. #define L_TEC_FLINEABSX        ( 0xC40 / sizeof(u_int) )
  209. #define L_TEC_FLINEABSY        ( 0xC44 / sizeof(u_int) )
  210. #define L_TEC_FLINEABSZ        ( 0xC48 / sizeof(u_int) )
  211. #define L_TEC_FLINEABSW        ( 0xC4C / sizeof(u_int) )
  212. #define L_TEC_FLINERELX        ( 0xC50 / sizeof(u_int) )
  213. #define L_TEC_FLINERELY        ( 0xC54 / sizeof(u_int) )
  214. #define L_TEC_FLINERELZ        ( 0xC58 / sizeof(u_int) )
  215. #define L_TEC_FLINERELW        ( 0xC5C / sizeof(u_int) )
  216.  
  217. #define L_TEC_FTRIABSX        ( 0xC80 / sizeof(u_int) )
  218. #define L_TEC_FTRIABSY        ( 0xC84 / sizeof(u_int) )
  219. #define L_TEC_FTRIABSZ        ( 0xC88 / sizeof(u_int) )
  220. #define L_TEC_FTRIABSW        ( 0xC8C / sizeof(u_int) )
  221. #define L_TEC_FTRIRELX        ( 0xC90 / sizeof(u_int) )
  222. #define L_TEC_FTRIRELY        ( 0xC94 / sizeof(u_int) )
  223. #define L_TEC_FTRIRELZ        ( 0xC98 / sizeof(u_int) )
  224. #define L_TEC_FTRIRELW        ( 0xC9C / sizeof(u_int) )
  225.  
  226. #define L_TEC_FQUADABSX        ( 0xCC0 / sizeof(u_int) )
  227. #define L_TEC_FQUADABSY        ( 0xCC4 / sizeof(u_int) )
  228. #define L_TEC_FQUADABSZ        ( 0xCC8 / sizeof(u_int) )
  229. #define L_TEC_FQUADABSW        ( 0xCCC / sizeof(u_int) )
  230. #define L_TEC_FQUADRELX        ( 0xCD0 / sizeof(u_int) )
  231. #define L_TEC_FQUADRELY        ( 0xCD4 / sizeof(u_int) )
  232. #define L_TEC_FQUADRELZ        ( 0xCD8 / sizeof(u_int) )
  233. #define L_TEC_FQUADRELW        ( 0xCDC / sizeof(u_int) )
  234.  
  235. #define L_TEC_FRECTABSX        ( 0xD00 / sizeof(u_int) )
  236. #define L_TEC_FRECTABSY        ( 0xD04 / sizeof(u_int) )
  237. #define L_TEC_FRECTABSZ        ( 0xD08 / sizeof(u_int) )
  238. #define L_TEC_FRECTABSW        ( 0xD0C / sizeof(u_int) )
  239. #define L_TEC_FRECTRELX        ( 0xD10 / sizeof(u_int) )
  240. #define L_TEC_FRECTRELY        ( 0xD14 / sizeof(u_int) )
  241. #define L_TEC_FRECTRELZ        ( 0xD18 / sizeof(u_int) )
  242. #define L_TEC_FRECTRELW        ( 0xD1C / sizeof(u_int) )
  243.  
  244. /* 
  245.  * Generic unsigned types for bit fields
  246.  */
  247. typedef enum {
  248.       L_TEC_UNUSED = 0
  249. } l_tec_unused_t;
  250.  
  251. /* 
  252.  * typedefs for entering index registers
  253.  */
  254. typedef enum {        /* coordinate type of {pou_int,line,etc} */
  255.     L_TEC_X = 0,
  256.     L_TEC_Y = 1,
  257.     L_TEC_Z = 2,
  258.     L_TEC_W = 3,     /* used as index to store index writes in tec_data array*/
  259.       L_TEC_X_MV = 4, 
  260.     L_TEC_Y_MV = 5, 
  261.     L_TEC_Z_MV = 6, 
  262.     L_TEC_W_MV = 7, /* used as index to store xform results */
  263.       L_TEC_X_VDC = 8, 
  264.     L_TEC_Y_VDC = 9, 
  265.     L_TEC_Z_VDC = 10, /* used as index to store VDC multiply results */
  266.       L_TEC_SCRATCH = 11        /* scratch register */
  267. } l_tec_coord_t;
  268.  
  269. typedef enum {            /* index coordinate type */
  270.       L_TEC_INT = 0, 
  271.     L_TEC_FRAC = 1, 
  272.     L_TEC_FLOAT = 2
  273. } l_tec_type_t;
  274.  
  275. typedef enum {            /* index object type */
  276.       L_TEC_POINT = 0, 
  277.     L_TEC_LINE = 1, 
  278.     L_TEC_TRI = 2, 
  279.     L_TEC_QUAD = 3, 
  280.     L_TEC_RECT = 4
  281. } l_tec_object_t;
  282.  
  283. typedef enum {
  284.       L_TEC_ABS = 0, 
  285.     L_TEC_REL = 1
  286. } l_tec_mode_t;
  287.  
  288.  
  289. /*
  290.  * TEC MV_MATRIX register bits.
  291.  */
  292.  
  293. typedef enum {
  294.       L_TEC_MV_DIV_OFF = 0, 
  295.     L_TEC_MV_DIV_ON = 1
  296. } l_tec_mv_div_t;
  297.  
  298. typedef enum {
  299.       L_TEC_MV_AUTO_OFF = 0, 
  300.     L_TEC_MV_AUTO_ON = 1
  301. } l_tec_mv_auto_t;
  302.  
  303. typedef enum {
  304.       L_TEC_MV_H_FALSE = 0, 
  305.     L_TEC_MV_H_TRUE = 1
  306. } l_tec_mv_h_t;
  307.  
  308. typedef enum {
  309.       L_TEC_MV_Z_FALSE = 0, L_TEC_MV_Z_TRUE = 1
  310.   } l_tec_mv_z_t;
  311.  
  312. typedef enum {
  313.   L_TEC_MV_I3 = 0, L_TEC_MV_I4 = 1
  314.   } l_tec_mv_i_t;
  315.  
  316. typedef enum {
  317.   L_TEC_MV_J1 = 0, L_TEC_MV_J2 = 1, L_TEC_MV_J3 = 2, L_TEC_MV_J4 = 3
  318.   } l_tec_mv_j_t;
  319.  
  320. typedef struct l_tec_mv {
  321.   l_tec_unused_t     l_tec_mv_unused1    :16;    /* NOT USED */
  322.   l_tec_mv_div_t    l_tec_mv_div         : 1;    /* divide enable */
  323.   l_tec_mv_auto_t    l_tec_mv_autoload     : 1;    /* autoload enable */
  324.   l_tec_mv_h_t        l_tec_mv_h         : 1;    /* pou_int size */
  325.   l_tec_mv_z_t        l_tec_mv_z         : 1;    /* pou_int size */
  326.   l_tec_unused_t    l_tec_mv_unused2    : 1;    /* NOT USED */
  327.   l_tec_mv_i_t        l_tec_mv_i         : 1;    /* matrix rows */
  328.   l_tec_mv_j_t        l_tec_mv_j         : 2;    /* matrix columns */
  329.   l_tec_unused_t    l_tec_mv_unused3    : 2;    /* NOT USED */
  330.   unsigned        l_tec_mv_index         : 6;    /* matrix start data reg. */
  331. } l_tec_mv_t;
  332.  
  333.  
  334.  
  335. /*
  336.  * TEC CLIPCHECK bits.
  337.  */
  338.  
  339. typedef enum { 
  340.   L_TEC_EXCEPTION_OFF = 0, L_TEC_EXCEPTION_ON= 1
  341.   } l_tec_clip_exception_t;
  342.  
  343. typedef enum {
  344.   L_TEC_HIDDEN_OFF = 0, L_TEC_HIDDEN_ON = 1 
  345.   } l_tec_clip_hidden_t;
  346.  
  347. typedef enum {
  348.   L_TEC_INTERSECT_OFF = 0, L_TEC_INTERSECT_ON = 1 
  349.   } l_tec_clip_u_intersect_t;
  350.  
  351. typedef enum {
  352.   L_TEC_VISIBLE_OFF = 0, L_TEC_VISIBLE_ON = 1 
  353.   } l_tec_clip_visible_t;
  354.  
  355. typedef enum {
  356.   L_TEC_ACC_BACKSIDE_FALSE = 0,   L_TEC_ACC_BACKSIDE_TRUE = 1
  357.   } l_tec_clip_acc_backside_t;
  358.  
  359. typedef enum {
  360.   L_TEC_ACC_LT_FALSE = 0, L_TEC_ACC_LT_TRUE = 1 
  361.   } l_tec_clip_acc_lt_t;
  362.  
  363. typedef enum {
  364.   L_TEC_ACC_INSIDE_FALSE = 0, L_TEC_ACC_INSIDE_TRUE = 1 
  365.   } l_tec_clip_acc_inside_t;
  366.  
  367. typedef enum {
  368.   L_TEC_ACC_GT_FALSE = 0, L_TEC_ACC_GT_TRUE = 1 
  369.   } l_tec_clip_acc_gt_t;
  370.  
  371. typedef enum {
  372.   L_TEC_LT_FALSE = 0, L_TEC_LT_TRUE = 1 
  373.   } l_tec_clip_lt_t;
  374.  
  375. typedef enum {
  376.   L_TEC_GT_FALSE = 0, L_TEC_GT_TRUE = 1 
  377.   } l_tec_clip_gt_t;
  378.  
  379. typedef enum {
  380.   L_TEC_CLIP_OFF = 0, L_TEC_CLIP_ON = 1 
  381.   } l_tec_clip_enable_t;
  382.  
  383. typedef struct l_tec_clip {        /* big assumption here is compiler assigns bit fields left to right */
  384.       l_tec_clip_exception_t        l_tec_clip_exception        : 1;
  385.       l_tec_clip_hidden_t        l_tec_clip_hidden        : 1;
  386.       l_tec_clip_u_intersect_t        l_tec_clip_intersect        : 1;
  387.       l_tec_clip_visible_t        l_tec_clip_visible        : 1;
  388.     l_tec_unused_t            l_tec_clip_unused1        : 3;        /* unused */
  389.     l_tec_clip_enable_t        l_tec_clip_enable        : 1;
  390.     
  391.       l_tec_clip_acc_backside_t    l_tec_clip_acc_z_backside    : 1;
  392.       l_tec_clip_acc_lt_t        l_tec_clip_acc_z_lt_front    : 1;
  393.       l_tec_clip_acc_inside_t        l_tec_clip_acc_z_inside        : 1;
  394.       l_tec_clip_acc_gt_t        l_tec_clip_acc_z_gt_back    : 1;
  395.      l_tec_clip_lt_t            l_tec_clip_z_lt_front        : 1;
  396.       l_tec_clip_gt_t            l_tec_clip_z_gt_back        : 1;
  397.       l_tec_clip_enable_t        l_tec_clip_front        : 1;
  398.       l_tec_clip_enable_t        l_tec_clip_back            : 1;
  399.  
  400.       l_tec_clip_acc_backside_t    l_tec_clip_acc_y_backside    : 1;
  401.       l_tec_clip_acc_lt_t        l_tec_clip_acc_y_lt_bottom    : 1;
  402.       l_tec_clip_acc_inside_t        l_tec_clip_acc_y_inside        : 1;
  403.       l_tec_clip_acc_gt_t        l_tec_clip_acc_y_gt_top        : 1;
  404.       l_tec_clip_lt_t            l_tec_clip_y_lt_bottom        : 1;
  405.       l_tec_clip_gt_t            l_tec_clip_y_gt_top        : 1;
  406.       l_tec_clip_enable_t        l_tec_clip_bottom        : 1;
  407.       l_tec_clip_enable_t        l_tec_clip_top            : 1;
  408.  
  409.       l_tec_clip_acc_backside_t    l_tec_clip_acc_x_backside    : 1;
  410.       l_tec_clip_acc_lt_t        l_tec_clip_acc_x_lt_left    : 1;
  411.       l_tec_clip_acc_inside_t        l_tec_clip_acc_x_inside        : 1;
  412.       l_tec_clip_acc_gt_t        l_tec_clip_acc_x_gt_right    : 1;
  413.       l_tec_clip_lt_t            l_tec_clip_x_lt_left        : 1;
  414.       l_tec_clip_gt_t            l_tec_clip_x_gt_right        : 1;
  415.       l_tec_clip_enable_t        l_tec_clip_left            : 1;
  416.       l_tec_clip_enable_t        l_tec_clip_right        : 1;
  417. } l_tec_clip_t;
  418.  
  419.  
  420. /*
  421.  * TEC VDC_MATRIX register bits.
  422.  */
  423.  
  424. typedef enum {
  425.   L_TEC_VDC_INT = 0 , L_TEC_VDC_FIXED = 1 , L_TEC_VDC_FLOAT = 2,
  426.   L_TEC_VDC_INTRNL0 = 4 , L_TEC_VDC_INTRNL1 = 5,
  427. }l_tec_vdc_type_t;
  428.  
  429. typedef enum {
  430.     L_TEC_VDC_2D = 0, L_TEC_VDC_3D = 1
  431.     }l_tec_vdc_k_t;
  432.  
  433. typedef enum {
  434.     L_TEC_VDC_MUL_OFF = 0 , L_TEC_VDC_MUL_ON = 1
  435.     }l_tec_vdc_mul_t;
  436.  
  437.  
  438. typedef struct l_tec_vdc {
  439.     l_tec_unused_t        l_tec_vdc_unused1    : 16;            /* NOT USED */
  440.     l_tec_vdc_type_t     l_tec_vdc_type         : 3; /* register access type */
  441.     l_tec_vdc_mul_t        l_tec_vdc_mul         : 1; /* enable VDC multiply */
  442.     l_tec_unused_t        l_tec_vdc_unused2    : 3;            /* NOT USED */
  443.     l_tec_vdc_k_t        l_tec_vdc_k         : 1; /* 2D/3D format */
  444.     l_tec_unused_t        l_tec_vdc_unused3    : 2;            /* NOT USED */
  445.     unsigned        l_tec_vdc_index     : 6; /* matrix start data reg. */
  446.       } l_tec_vdc_t;
  447.  
  448. /*
  449.  * TEC COMMAND register bits.
  450.  */
  451.  
  452. typedef enum {
  453.     L_TEC_CMD_M1 = 0, 
  454.     L_TEC_CMD_M2 = 1, 
  455.     L_TEC_CMD_M3 = 2, 
  456.     L_TEC_CMD_M4 = 3
  457. }l_tec_cmd_m_t;
  458.  
  459. typedef enum {
  460.     L_TEC_CMD_N1 = 0, 
  461.     L_TEC_CMD_N2 = 1, 
  462.     L_TEC_CMD_N3 = 2, 
  463.     L_TEC_CMD_N4 = 3
  464. }l_tec_cmd_n_t;
  465.  
  466. typedef enum {
  467.     L_TEC_CMD_I_POS = 0, 
  468.     L_TEC_CMD_I_NEG = 1
  469. }l_tec_cmd_i_t;
  470.  
  471. typedef struct l_tec_cmd {
  472.     l_tec_cmd_m_t        l_tec_cmd_m : 2;    /* matrix A columns */
  473.     l_tec_cmd_n_t        l_tec_cmd_n : 2;    /* matrix B columns */
  474.     l_tec_cmd_i_t        l_tec_cmd_i11 : 1;    /* identity diagonal sign */
  475.     l_tec_cmd_i_t        l_tec_cmd_i22 : 1;    /* identity diagonal sign */
  476.     l_tec_cmd_i_t        l_tec_cmd_i33 : 1;    /* identity diagonal sign */
  477.     l_tec_cmd_i_t        l_tec_cmd_i44 : 1;    /* identity diagonal sign */
  478.     l_tec_unused_t        l_tec_cmd_unused1 : 2;            /* NOT USED */
  479.     unsigned        l_tec_cmd_Aindex : 6;    /* A matrix start data reg. */
  480.     l_tec_unused_t        l_tec_cmd_unused2 : 2;            /* NOT USED */
  481.     unsigned        l_tec_cmd_Bindex : 6;    /* B matrix start data reg. */
  482.     l_tec_unused_t        l_tec_cmd_unused3 : 2;            /* NOT USED */
  483.     unsigned        l_tec_cmd_Cindex : 6;    /* C matrix start data reg. */
  484. } l_tec_cmd_t;
  485.  
  486. /*
  487.  * TEC registers defined as a structure.
  488.  */
  489. struct tec {
  490. #ifdef tec_structures
  491.     struct l_tec_mv        l_tec_mv;        /* 0 */
  492.     struct l_tec_clip    l_tec_clip;        /* 1 */
  493.     struct l_tec_vdc    l_tec_vdc;        /* 2 */
  494.     u_int    l_tec_pad_3[4-3];
  495.     struct l_tec_cmd    l_tec_command1;        /* 4 */
  496.     struct l_tec_cmd    l_tec_command2;        /* 5 */
  497.     struct l_tec_cmd    l_tec_command3;        /* 6 */
  498.     struct l_tec_cmd    l_tec_command4;        /* 7 */
  499. #else
  500.     u_int     l_tec_mv;                /* 0 */
  501.     u_int     l_tec_clip;                /* 1 */
  502.     u_int     l_tec_vdc;                /* 2 */
  503.     u_int    l_tec_pad_3[4-3];
  504.     u_int     l_tec_command1;                /* 4 */
  505.     u_int     l_tec_command2;                /* 5 */
  506.     u_int     l_tec_command3;                /* 6 */
  507.     u_int     l_tec_command4;                /* 7 */
  508. #endif
  509.     u_int    l_tec_pad_8[64-8];
  510.     u_int    l_tec_data00;                /* 64 */
  511.     u_int    l_tec_data01;                /* 65 */
  512.     u_int    l_tec_data02;                /* 66 */
  513.     u_int    l_tec_data03;                /* 67 */
  514.     u_int    l_tec_data04;                /* 68 */
  515.     u_int    l_tec_data05;                /* 69 */
  516.     u_int    l_tec_data06;                /* 70 */
  517.     u_int    l_tec_data07;                /* 71 */
  518.     u_int    l_tec_data08;                /* 72 */
  519.     u_int    l_tec_data09;                /* 73 */
  520.     u_int    l_tec_data10;                /* 74 */
  521.     u_int    l_tec_data11;                /* 75 */
  522.     u_int    l_tec_data12;                /* 76 */
  523.     u_int    l_tec_data13;                /* 77 */
  524.     u_int    l_tec_data14;                /* 78 */
  525.     u_int    l_tec_data15;                /* 79 */
  526.     u_int    l_tec_data16;                /* 80 */
  527.     u_int    l_tec_data17;                /* 81 */
  528.     u_int    l_tec_data18;                /* 82 */
  529.     u_int    l_tec_data19;                /* 83 */
  530.     u_int    l_tec_data20;                /* 84 */
  531.     u_int    l_tec_data21;                /* 85 */
  532.     u_int    l_tec_data22;                /* 86 */
  533.     u_int    l_tec_data23;                /* 87 */
  534.     u_int    l_tec_data24;                /* 88 */
  535.     u_int    l_tec_data25;                /* 89 */
  536.     u_int    l_tec_data26;                /* 90 */
  537.     u_int    l_tec_data27;                /* 91 */
  538.     u_int    l_tec_data28;                /* 92 */
  539.     u_int    l_tec_data29;                /* 93 */
  540.     u_int    l_tec_data30;                /* 94 */
  541.     u_int    l_tec_data31;                /* 95 */
  542.     u_int    l_tec_data32;                /* 96 */
  543.     u_int    l_tec_data33;                /* 97 */
  544.     u_int    l_tec_data34;                /* 98 */
  545.     u_int    l_tec_data35;                /* 99 */
  546.     u_int    l_tec_data36;                /* 100 */
  547.     u_int    l_tec_data37;                /* 101 */
  548.     u_int    l_tec_data38;                /* 102 */
  549.     u_int    l_tec_data39;                /* 103 */
  550.     u_int    l_tec_data40;                /* 104 */
  551.     u_int    l_tec_data41;                /* 105 */
  552.     u_int    l_tec_data42;                /* 106 */
  553.     u_int    l_tec_data43;                /* 107 */
  554.     u_int    l_tec_data44;                /* 108 */
  555.     u_int    l_tec_data45;                /* 109 */
  556.     u_int    l_tec_data46;                /* 110 */
  557.     u_int    l_tec_data47;                /* 111 */
  558.     u_int    l_tec_data48;                /* 112 */
  559.     u_int    l_tec_data49;                /* 113 */
  560.     u_int    l_tec_data50;                /* 114 */
  561.     u_int    l_tec_data51;                /* 115 */
  562.     u_int    l_tec_data52;                /* 116 */
  563.     u_int    l_tec_data53;                /* 117 */
  564.     u_int    l_tec_data54;                /* 118 */
  565.     u_int    l_tec_data55;                /* 119 */
  566.     u_int    l_tec_data56;                /* 120 */
  567.     u_int    l_tec_data57;                /* 121 */
  568.     u_int    l_tec_data58;                /* 122 */
  569.     u_int    l_tec_data59;                /* 123 */
  570.     u_int    l_tec_data60;                /* 124 */
  571.     u_int    l_tec_data61;                /* 125 */
  572.     u_int    l_tec_data62;                /* 126 */
  573.     u_int    l_tec_data63;                /* 127 */
  574.     u_int    l_tec_pad_128[512-128];
  575.     u_int    l_tec_ipointabsx;            /* 512 */
  576.     u_int    l_tec_ipointabsy;            /* 513 */
  577.     u_int    l_tec_ipointabsz;            /* 514 */
  578.     u_int    l_tec_ipointabsw;            /* 515 */
  579.     u_int    l_tec_ipointrelx;            /* 516 */
  580.     u_int    l_tec_ipointrely;            /* 517 */
  581.     u_int    l_tec_ipointrelz;            /* 518 */
  582.     u_int    l_tec_ipointrelw;            /* 519 */
  583.     u_int    l_tec_pad_520[528-520];
  584.     u_int    l_tec_ilineabsx;            /* 528 */
  585.     u_int    l_tec_ilineabsy;            /* 529 */
  586.     u_int    l_tec_ilineabsz;            /* 530 */
  587.     u_int    l_tec_ilineabsw;            /* 531 */
  588.     u_int    l_tec_ilinerelx;            /* 532 */
  589.     u_int    l_tec_ilinerely;            /* 533 */
  590.     u_int    l_tec_ilinerelz;            /* 534 */
  591.     u_int    l_tec_ilinerelw;            /* 535 */
  592.     u_int    l_tec_pad_536[544-536];
  593.     u_int    l_tec_itriabsx;                /* 544 */
  594.     u_int    l_tec_itriabsy;                /* 545 */
  595.     u_int    l_tec_itriabsz;                /* 546 */
  596.     u_int    l_tec_itriabsw;                /* 547 */
  597.     u_int    l_tec_itrirelx;                /* 548 */
  598.     u_int    l_tec_itrirely;                /* 549 */
  599.     u_int    l_tec_itrirelz;                /* 550 */
  600.     u_int    l_tec_itrirelw;                /* 551 */
  601.     u_int    l_tec_pad_552[560-552];
  602.     u_int    l_tec_iquadabsx;            /* 560 */
  603.     u_int    l_tec_iquadabsy;            /* 561 */
  604.     u_int    l_tec_iquadabsz;            /* 562 */
  605.     u_int    l_tec_iquadabsw;            /* 563 */
  606.     u_int    l_tec_iquadrelx;            /* 564 */
  607.     u_int    l_tec_iquadrely;            /* 565 */
  608.     u_int    l_tec_iquadrelz;            /* 566 */
  609.     u_int    l_tec_iquadrelw;            /* 567 */
  610.     u_int    l_tec_pad_568[576-568];
  611.     u_int    l_tec_irectabsx;            /* 576 */
  612.     u_int    l_tec_irectabsy;            /* 577 */
  613.     u_int    l_tec_irectabsz;            /* 578 */
  614.     u_int    l_tec_irectabsw;            /* 579 */
  615.     u_int    l_tec_irectrelx;            /* 580 */
  616.     u_int    l_tec_irectrely;            /* 581 */
  617.     u_int    l_tec_irectrelz;            /* 582 */
  618.     u_int    l_tec_irectrelw;            /* 583 */
  619.     u_int    l_tec_pad_584[640-584];
  620.     u_int    l_tec_bpointabsx;            /* 640 */
  621.     u_int    l_tec_bpointabsy;            /* 641 */
  622.     u_int    l_tec_bpointabsz;            /* 642 */
  623.     u_int    l_tec_bpointabsw;            /* 643 */
  624.     u_int    l_tec_bpointrelx;            /* 644 */
  625.     u_int    l_tec_bpointrely;            /* 645 */
  626.     u_int    l_tec_bpointrelz;            /* 646 */
  627.     u_int    l_tec_bpointrelw;            /* 647 */
  628.     u_int    l_tec_pad_648[656-648];
  629.     u_int    l_tec_blineabsx;            /* 656 */
  630.     u_int    l_tec_blineabsy;            /* 657 */
  631.     u_int    l_tec_blineabsz;            /* 658 */
  632.     u_int    l_tec_blineabsw;            /* 659 */
  633.     u_int    l_tec_blinerelx;            /* 660 */
  634.     u_int    l_tec_blinerely;            /* 661 */
  635.     u_int    l_tec_blinerelz;            /* 662 */
  636.     u_int    l_tec_blinerelw;            /* 663 */
  637.     u_int    l_tec_pad_664[672-664];
  638.     u_int    l_tec_btriabsx;                /* 672 */
  639.     u_int    l_tec_btriabsy;                /* 673 */
  640.     u_int    l_tec_btriabsz;                /* 674 */
  641.     u_int    l_tec_btriabsw;                /* 675 */
  642.     u_int    l_tec_btrirelx;                /* 676 */
  643.     u_int    l_tec_btrirely;                /* 677 */
  644.     u_int    l_tec_btrirelz;                /* 678 */
  645.     u_int    l_tec_btrirelw;                /* 679 */
  646.     u_int    l_tec_pad_680[688-680];
  647.     u_int    l_tec_bquadabsx;            /* 688 */
  648.     u_int    l_tec_bquadabsy;            /* 689 */
  649.     u_int    l_tec_bquadabsz;            /* 690 */
  650.     u_int    l_tec_bquadabsw;            /* 691 */
  651.     u_int    l_tec_bquadrelx;            /* 692 */
  652.     u_int    l_tec_bquadrely;            /* 693 */
  653.     u_int    l_tec_bquadrelz;            /* 694 */
  654.     u_int    l_tec_bquadrelw;            /* 695 */
  655.     u_int    l_tec_pad_696[704-696];
  656.     u_int    l_tec_brectabsx;            /* 704 */
  657.     u_int    l_tec_brectabsy;            /* 705 */
  658.     u_int    l_tec_brectabsz;            /* 706 */
  659.     u_int    l_tec_brectabsw;            /* 707 */
  660.     u_int    l_tec_brectrelx;            /* 708 */
  661.     u_int    l_tec_brectrely;            /* 709 */
  662.     u_int    l_tec_brectrelz;            /* 710 */
  663.     u_int    l_tec_brectrelw;            /* 711 */
  664.     u_int    l_tec_pad_712[768-712];
  665.     u_int    l_tec_fpointabsx;            /* 768 */
  666.     u_int    l_tec_fpointabsy;            /* 769 */
  667.     u_int    l_tec_fpointabsz;            /* 770 */
  668.     u_int    l_tec_fpointabsw;            /* 771 */
  669.     u_int    l_tec_fpointrelx;            /* 772 */
  670.     u_int    l_tec_fpointrely;            /* 773 */
  671.     u_int    l_tec_fpointrelz;            /* 774 */
  672.     u_int    l_tec_fpointrelw;            /* 775 */
  673.     u_int    l_tec_pad_776[784-776];
  674.     u_int    l_tec_flineabsx;            /* 784 */
  675.     u_int    l_tec_flineabsy;            /* 785 */
  676.     u_int    l_tec_flineabsz;            /* 786 */
  677.     u_int    l_tec_flineabsw;            /* 787 */
  678.     u_int    l_tec_flinerelx;            /* 788 */
  679.     u_int    l_tec_flinerely;            /* 789 */
  680.     u_int    l_tec_flinerelz;            /* 790 */
  681.     u_int    l_tec_flinerelw;            /* 791 */
  682.     u_int    l_tec_pad_792[800-792];
  683.     u_int    l_tec_ftriabsx;                /* 800 */
  684.     u_int    l_tec_ftriabsy;                /* 801 */
  685.     u_int    l_tec_ftriabsz;                /* 802 */
  686.     u_int    l_tec_ftriabsw;                /* 803 */
  687.     u_int    l_tec_ftrirelx;                /* 804 */
  688.     u_int    l_tec_ftrirely;                /* 805 */
  689.     u_int    l_tec_ftrirelz;                /* 806 */
  690.     u_int    l_tec_ftrirelw;                /* 807 */
  691.     u_int    l_tec_pad_808[816-808];
  692.     u_int    l_tec_fquadabsx;            /* 816 */
  693.     u_int    l_tec_fquadabsy;            /* 817 */
  694.     u_int    l_tec_fquadabsz;            /* 818 */
  695.     u_int    l_tec_fquadabsw;            /* 819 */
  696.     u_int    l_tec_fquadrelx;            /* 820 */
  697.     u_int    l_tec_fquadrely;            /* 821 */
  698.     u_int    l_tec_fquadrelz;            /* 822 */
  699.     u_int    l_tec_fquadrelw;            /* 823 */
  700.     u_int    l_tec_pad_824[832-824];
  701.     u_int    l_tec_frectabsx;            /* 832 */
  702.     u_int    l_tec_frectabsy;            /* 833 */
  703.     u_int    l_tec_frectabsz;            /* 834 */
  704.     u_int    l_tec_frectabsw;            /* 835 */
  705.     u_int    l_tec_frectrelx;            /* 836 */
  706.     u_int    l_tec_frectrely;            /* 837 */
  707.     u_int    l_tec_frectrelz;            /* 838 */
  708.     u_int    l_tec_frectrelw;            /* 839 */
  709. };
  710.  
  711. #define NUM_TEC_REGS    (sizeof(struct l_tec)/sizeof(u_int))
  712.  
  713. #endif !cg6tec_DEFINED
  714.